Plan de Estudio Blazor ASP.NET Core .NET 9 2025

Recientemente estoy retomando la programación y decidí irme por la ruta Blazor SSR y Hybrid para desarrollo multiplataforma con C#. Este es mi plan de estudios:

Requerimientos de mi nuevo conjunto de tecnologías de desarrollo:

  • Prioridad a web con buen desempeño en SEO.
  • Desarrollo de proyectos medianos y pequeños de manera independiente o con pocos colaboradores.
  • Posibilidad de migrar casi 100% del código para hacer aplicación de escritorio y móvil.
  • Desarrollo unificado en C#.

Única opción a 2025:

Blazor con SSR + Blazor Hybrid (.NET MAUI)

Prioridades:

  • ★★★ Alta prioridad: Fundamentales para aplicaciones pequeñas y medianas.
  • ★★ Intermedia: Valiosos para ampliar conocimientos.
  • ★ Baja: No necesarios por el momento.

Lenguajes

  • ★★★ C# 14+
    • ★★★ LINQ
    • ★★★ Nulables
    • ★★★ Registros y Coincidencia de Patrones
    • ★★★ Asincronía
  • ★★★ HTML
  • ★★★ CSS
  • ★★ JavaScript Mínimo: Lo básico para algunas pequeñas cosas y para integraciones con librerías externas usando JS Interop.

Backend con ASP.NET Core 9+

  • ★★★ Dependency Injection: Similar a interfaces pero más práctica.
  • ★★★ Text.Json
  • ★★★ Autenticación con Roles o Políticas. Elegir:
    • ★★★ Core Identity: Autenticación en servidor usando cookies (Blazor Server y SSR).
    • ★★ JWT + OAuth2: Autenticación basada en tokens para acceso a APIs desde el cliente (Blazor WebAssembly).
  • ★★★ API. Elegir:
    • ★★★ OpenAPI: Para documentar y probar APIs. Compatible con los otros 3.
    • ★★★ .NET Core Web API: Más controles de acceso y fácilidad de pruebas. Código más estructurado.
    • ★★ Minimal API: Más simple, fácil de implementar y rápida. Útil para aplicaciones pequeñas y microservicios.
    • ★ GraphQL: APIs con múltiples clientes que requieren datos personalizados, GraphQL puede ser más eficiente que REST.
  • ★★★ ORM. Elegir:
    • ★★★ Entity Framework Core: Preferido por fácilidad y familiaridad.
    • ★★ Dapper: ORM que podría dar más velocidad si fuera necesario, pero es menos mantenible.
  • ★★★ Cacheo. Elegir:
    • ★★★ Memory Cache: IMemoryCache y HybridCache.
    • ★ Redis: Si se usa autenticación con tokens o cargas pesadas. Es una caché compartido mejora rendimiento.
  • ★★★ Validación. Elegir:
    • ★★★ Atributos
    • ★★ FluentValidation: Aunque es más complicado que usar atributos y no aporta muchas ventajas en validaciones simples.
  • ★★★ IOptions<T>: Manejo de configuraciones separadas y fácil cambio, por ejemplo appsettings.Development.json, appsettings.Production.json, etc.
  • ★★ AutoMapper: Util para aplanar objetos complejos en objetos planos DTO y como capa adicional de seguridad.
  • ★ Razor Pages: Útil para páginas simples, pero es casi idéntico en ventajas a Blazor SSR sin aportar adicionales. Es preferible manejar un solo paradigma con Blazor.
  • ★ IHostedService: Tareas en segundo plano.
  • ★ IA: Azure OpenAI, embeddings, etc.

Front End

  • ★★★ Blazor SSR: Carga diferida y prerenderizado.
  • ★★★ Blazor WebAssembly: Interactividad en cliente.
  • ★★★ Blazor Hybrid: En combinación con MAUI permite usar código Blazor para aplicaciones de móvil y escritorio con acceso a todo el sistema y publicables en tiendas.
  • ★★★ Temas Blazor: Componentes, rutas y su seguridad, formularios y su validación e inyección de servicios.
  • ★★★ Manejo de Estado: Scoped (por usuario), Singleton (global), Transient (cada vez) guardando información en LocalStorage y ProtectedLocalStorage.
  • ★★★ Blazored: Colección de componentes para Blazor: Local Storage, Session Storage, Modal Dialog, Toast (Mensajes notificación inferiores), FluentValidation en Blazor.
  • ★★★ Diseño. Elegir:
    • ★★★ Tailwind CSS: Reemplaza Bootstrap, más moderno, más limpio, muy usado hoy. Componentes con parámetros, transiciones, accessibilidad y responsibidad.
    • ★★ Fluent UI Blazor: Componentes basados en el estilo de Microsoft. De peso intermedio.
    • ★★ MudBlazor: Para diseño más listo y componentes Blazor ya funcionales, pero hace el sitio más pesado.
  • ★★ Blazor Server: Usa SignalR para conexiones permanentes para aplicaciones que requieren actualizaciones en tiempo real. Pesado para el servidor si hay muchos usuarios.
  • ★ PWA: Aplicación web instalable en móvil y escritorio. Más ligera que Blazor Hybrid, pero más limitada en el acceso al sistema. No es publicable en la tienda iOS.
  • ★ WebAssembly Interop: Para interacciones más avanzadas o rendimiento en cliente. Especialmente si se quiere integrar bibliotecas externas no .NET.

Arquitectura

  • ★★★ Modularización: Separar la solución en proyectos: Core, Application, Infrastructure, UI (Blazor) y Mobile (MAUI) para facilitar despliegue y pruebas.
  • ★★★ Arquitectura por Cortes Verticales (VSA): Funcionalidad del sistema está separada en un módulo con sus propios controladores, validaciones y lógica de negocio.
  • ★★ Ambientes: Configuraciones distintas para desarrollo, pruebas y producción.
  • ★★ Integración y Despliegue Continuo: Al subir un cambio, compila, prueba, valida y publica automáticamente. Elegir:
    • ★ GitHub Actions
    • ★ Azure DevOps
  • ★ Arquitectura Limpia: Código escalable y desacoplado, pero más complicada de implementar e innecesaria en proyectos medianos y pequeños.
  • ★ CQRS + Mediator Pattern: Añade complejidad innecesaria al código de lectura/escritura en base de datos.
  • ★ Docker: Es útil para desplegar la aplicación a contenedores propios con su propia configuración. No es necesario si se publica en servidor o en Azure.
  • ★ Feature Flags: Es solo un nombre para activar/desactivar funciones con condiciones. Se puede hacer con lógica simple en clases estáticas, config o base de datos.
  • ★ MVVM: Si el enfoque es reusar casi el 100% del código y Blazor ya trae su propio patrón de separación de código, agregar MVVM para integraciones con MAUI es innecesario.

Supervisión y Pruebas

  • ★★★ Pruebas Unitarias: Con xUnit principalmente a lógica de negocio crítica.
  • ★★★ Análisis de Rendimiento: Diagnostic Tools de Visual Studio y Application Insights.
  • ★★★ Telemetría: Registro de eventos y errores con ILogger. Elegir:
    • ★★★ Application Insights: Es relativamente económico, se puede usar para cualquier app y tiene un excelente portal y herramientas con las que ya estoy familiarizado.
    • ★ OpenTelemetry: No le veo mayores ventajas frente Application Insights aparte de que es gratis.
  • ★★★ Monitoreo y Alertas Automáticas. Elegir:
    • ★★★ Azure Monitor
    • ★★ IHealthCheck: Verificación de salud de la aplicación y servicios conectados con punto de consulta personalizado. Util en aplicaciones sencillas que no estén en Azure.
    • ★ Prometheus + Grafana: Util para sitios fuera de Azure y que estén usando OpenTemetry.
  • ★★ Limitaciones por IP: Microsoft.AspNetCore.RateLimiting.
  • ★ Pruebas Fin a Fin (E2E): Con Playwright. Requieren mucha infraestructura y tiempo.

Herramientas

  • ★★★ GitHub con Dependabot
  • ★★★ Visual Studio 2022: Mejor experiencia para .NET, C#, MAUI, Blazor y Web API.
    • ★★★ Cargas de Trabajo: ASP.NET y web, Azure, escritorio de .NET, .NET MAUI y Datos.
    • ★★★ Extensiones: SonarQube, Middle Click Scroll, Collapse Comments, Collapse All Regions, SQLite/SQL Compact Toolbox, Disable No Source Av. Tab, Tailwind CSS VS2022.
  • ★★★ Administrador de SQL Server. Elegir:
    • ★★★ Visual Studio
    • ★ Server Management Studio
  • ★★★ Postman
  • ★★★ Emuladores: Android (Android SDK) desde Visual Studio Installer y Mac en la nube (MacStadium).
  • ★★★ Productividad AI:
    • ★★★ ChatGPT
    • ★★ Copilot: 10 USD al mes. Solo usar si mejora significativamente la productividad.
  • ★★★ Seguimiento a Tareas y Decisiones:
    • ★★★ Excel con filtros de prioridad tareas grandes y Notepad++ para pendientes urgentes.
    • ★★ GitHub Projects
    • ★ Notion

Me tarde un buen rato investigando y diseñando este plan entonces decidí compartirlo. ¡Espero te haya sido util!